home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / pctjja86.arc / LISTREV.PRO < prev    next >
Text File  |  1985-11-13  |  609b  |  24 lines

  1.  
  2. /* List reversal benchmark  */
  3. /* Number of logical inferences = (N**2 + N)/2 + N + 1,  */
  4. /* where N is the number of elements in the list.        */
  5.  
  6. reverse([],[]).
  7. reverse([X|Y],Z) :- reverse(Y,Y1), append(Y1,[X],Z). 
  8. append([],X,X).
  9. append([X|Y],Z,[X|W]) :- append(Y,Z,W). 
  10.  
  11. /* To perform the test, generate a 30-element list   */
  12. /* and then reverse it (446 logical inferences).     */
  13.  
  14. generate(0,[]).
  15. generate(N,[N|Y]) :-  M is N-1, generate(M,Y). 
  16.  
  17. test :- generate(30,X),
  18.         write('Start...'),
  19.         nl,
  20.         reverse(X,Y),
  21.         write(Y),
  22.         nl,
  23.         nl.
  24.